/*
* Copyright 2009 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.gwt.sample.gwtguestbook.server;
import com.google.gwt.sample.gwtguestbook.client.GuestService;
import com.google.gwt.sample.gwtguestbook.client.GuestbookEntryDTO;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.logging.Logger;
import javax.jdo.PersistenceManager;
import javax.jdo.Query;
/**
* The guest service implementation class responsible for managing guestbook
* entries.
*/
public class GuestServiceImpl extends RemoteServiceServlet implements
GuestService {
private static final Logger log = Logger.getLogger(GuestServiceImpl.class.getName());
@Override
public List<GuestbookEntryDTO> addGuestEntry(
GuestbookEntryDTO entry) {
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
entry.addDate(new Date());
// Create a new guestbook entry and persist
pm.currentTransaction().begin();
GuestbookEntry entryToPersist = new GuestbookEntry(entry);
entryToPersist.setTimestamp(Calendar.getInstance().getTimeInMillis());
pm.makePersistent(entryToPersist);
pm.currentTransaction().commit();
return getLatestEntries();
} finally {
if (pm.currentTransaction().isActive()) {
pm.currentTransaction().rollback();
}
}
}
@Override
public List<GuestbookEntryDTO> getLatestEntries() {
//PersistenceManager pm = PersistenceManagerHelper.getPersistenceManager();
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
// Set the query to get the ten latest guest entries
Query query = pm.newQuery(GuestbookEntry.class);
query.setOrdering("timestamp DESC");
List<GuestbookEntry> entries = (List<GuestbookEntry>) query.execute();
// Create a new guestbook entry transfer object for each entry and add
// them to the list
List<GuestbookEntryDTO> entryTransferObjects =
new ArrayList<GuestbookEntryDTO>(entries.size());
for (GuestbookEntry entry : entries) {
entryTransferObjects.add(new GuestbookEntryDTO(entry
.getName(), entry.getMessage(), entry.getDate()));
}
return entryTransferObjects;
} finally {
if (pm.currentTransaction().isActive()) {
pm.currentTransaction().rollback();
}
}
}
//TODO fix this
@Override
public List<GuestbookEntryDTO> getLatestEntry() {
//PersistenceManager pm = PersistenceManagerHelper.getPersistenceManager();
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
// Set the query to get the ten latest guest entries
Query query = pm.newQuery(GuestbookEntry.class);
query.setOrdering("timestamp DESC");
List<GuestbookEntry> entries = (List<GuestbookEntry>) query.execute();
// Create a new guestbook entry transfer object for each entry and add
// them to the list
List<GuestbookEntryDTO> entryTransferObjects =
new ArrayList<GuestbookEntryDTO>(entries.size());
for (GuestbookEntry entry : entries) {
entryTransferObjects.add(new GuestbookEntryDTO(entry
.getName(), entry.getMessage(), entry.getDate()));
}
return entryTransferObjects;
} finally {
if (pm.currentTransaction().isActive()) {
pm.currentTransaction().rollback();
}
}
}
}